<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>图表统计</title>
  <link rel="stylesheet" href="/assets/lib/bootstrap/bootstrap.min.css" />
  <script src="/assets/lib/jquery-3.6.0.min.js"></script>
  <script src="/assets/lib/echarts.min.js"></script>

  <style>
    body {
      font-family: 'MicroSoft YaHei';
      background-color: #f2f3f5;
    }

    .main_wrap {
      position: fixed;
      width: 100%;
      height: 100%;
      left: 0px;
      top: 0px;
      background: url('../images/login_bg.jpg');
      background-size: 100% 100%;
    }

    .header {
      width: 1200px;
      overflow: hidden;
      margin: 20px auto 0;
    }

    .heade .logo {
      float: left;
    }

    .header .copyright {
      float: right;
      font-size: 12px;
      color: #fff;
      text-align: right;
      line-height: 20px;
      margin-top: 10px;
    }

    .login_form_con {
      position: absolute;
      left: 50%;
      top: 50%;
      margin-left: -200px;
      margin-top: -155px;
      width: 400px;
      height: 310px;
      background-color: #edeff0;
    }

    .login_form {
      position: relative;
    }

    .login_form .icon-user {
      position: absolute;
      font-size: 16px;
      color: #999;
      left: 46px;
      top: 12px;
    }

    .login_form .icon-key {
      position: absolute;
      font-size: 18px;
      color: #999;
      left: 46px;
      top: 78px;
    }

    .login_title {
      height: 60px;
      background: url('../images/login_title.png') center center no-repeat #fff;
    }

    .input_txt,
    .input_pass,
    .input_sub {
      display: block;
      width: 334px;
      height: 37px;
      padding: 0px;
      text-indent: 40px;
      border: 1px solid #ddd;
      margin: 27px auto 0;
      outline: none;
    }

    .input_sub {
      margin-top: 40px;
      height: 42px;
      background-color: #19b9e7;
      text-indent: 0px;
      font-size: 18px;
      color: #fff;
      cursor: pointer;
    }

    .input_sub:hover {
      background-color: #08a0cc;
    }

    .sider {
      position: fixed;
      left: 0;
      top: 0;
      bottom: 0;
      width: 210px;
      background-color: #323745;
    }

    .sider .logo {
      display: block;
      height: 56px;
      background-color: #242732;
      overflow: hidden;
    }

    .sider .logo img {
      display: block;
      margin: 6px auto 0;
    }

    .user_info {
      height: 79px;
      border-bottom: 1px solid #5a5e6b;
    }

    .user_info img {
      float: left;
      width: 40px;
      height: 40px;
      border-radius: 20px;
      margin: 19px 0 0 30px;
    }

    .user_info span {
      float: left;
      width: 120px;
      font-size: 12px;
      color: #fff;
      margin: 23px 0 0 20px;
    }

    .user_info b {
      float: left;
      width: 120px;
      font-weight: normal;
      font-size: 12px;
      color: #adafb5;
      margin: 2px 0 0 20px;
    }

    .menu .level01 {
      height: 50px;
      line-height: 50px;
    }

    .menu .level01 a {
      display: block;
      height: 50px;
      font-size: 12px;
      color: #adafb5;
      overflow: hidden;
    }

    .menu .level01.active a {
      background-color: #1378f0;
      color: #fff;
    }

    .menu .level01.active i {
      color: #fff;
    }

    .menu .level01 a:hover {
      background-color: #1378f0;
      color: #fff;
    }

    .menu .level01 a:hover i {
      color: #fff;
    }

    .menu .level01 i {
      color: #61646f;
      font-size: 22px;
      float: left;
      margin-left: 26px;
    }

    .menu .level01 span {
      float: left;
      margin-left: 10px;
    }

    .menu .level01 b {
      float: right;
      margin-right: 20px;
      font-weight: normal;
      transform: rotate(90deg);
      transition: all 500ms ease;
    }

    .menu .level01 .rotate0 {
      transform: rotate(0deg);
    }

    .menu .level02 {
      background: #242732;
      display: none;
    }

    .menu .level02 li {
      height: 40px;
      line-height: 40px;
    }

    .menu .level02 li a {
      display: block;
      height: 40px;
      font-size: 12px;
      color: #adafb5;
      overflow: hidden;
    }

    .menu .level02 li a:hover {
      background-color: #1378f0;
      color: #fff;
    }

    .menu .level02 li i {
      font-size: 12px;
      float: left;
      margin-left: 60px;
    }

    .menu .level02 li span {
      font-size: 12px;
      float: left;
      margin-left: 5px;
    }

    .menu .level02 .active a {
      color: #ffae00;
    }

    .header_bar {
      position: fixed;
      left: 210px;
      right: 0;
      top: 0;
      height: 56px;
      background-color: #fff;
    }

    .main {
      position: fixed;
      left: 210px;
      top: 56px;
      right: 0;
      bottom: 0;
      background-color: #f2f3f5;
    }

    .search_form {
      width: 218px;
      height: 33px;
      border: 1px solid #ddd;
      background-color: #f2f3f5;
      border-radius: 16px;
      float: left;
      margin: 12px 0 0 27px;
    }

    .search_form input {
      padding: 0px;
      margin: 0px;
      border: 0px;
      float: left;
      background-color: #f2f3f5;
      font-size: 12px;
      width: 175px;
      height: 31px;
      margin-left: 12px;
      outline: none;
    }

    .search_form .icon-search {
      line-height: 33px;
      cursor: pointer;
      font-size: 18px;
      color: #abaebb;
    }

    .user_center_link {
      float: right;
    }

    .user_center_link a {
      line-height: 56px;
      font-size: 12px;
      color: #999;
      margin-right: 15px;
    }

    .user_center_link a:hover {
      color: #ffae00;
    }

    .user_center_link img {
      width: 42px;
      height: 42px;
      border-radius: 32px;
      margin-right: 10px;
    }

    .spannel_list {
      margin-top: 20px;
    }

    .spannel {
      height: 100px;
      overflow: hidden;
      text-align: center;
      position: relative;
      background-color: #fff;
      border: 1px solid #e7e7e9;
      margin-bottom: 20px;
    }

    .spannel em {
      font-style: normal;
      font-size: 50px;
      line-height: 50px;
      display: inline-block;
      margin: 10px 0 0 20px;
      font-family: 'Arial';
      color: #83a2ed;
    }

    .spannel span {
      font-size: 14px;
      display: inline-block;
      color: #83a2ed;
      margin-left: 10px;
    }

    .spannel b {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      line-height: 24px;
      background: #e5e5e5;
      color: #333;
      font-size: 14px;
      font-weight: normal;
    }

    .scolor01 em,
    .scolor01 span {
      color: #6ac6e2;
    }

    .scolor02 em,
    .scolor02 span {
      color: #5fd9de;
    }

    .scolor03 em,
    .scolor03 span {
      color: #58d88e;
    }

    .gragh_pannel {
      height: 350px;
      border: 1px solid #e7e7e9;
      background-color: #fff !important;
      margin-bottom: 20px;
    }

    .column_pannel {
      margin-bottom: 20px;
      height: 400px;
      border: 1px solid #e7e7e9;
      background-color: #fff !important;
    }

    .common_title {
      line-height: 42px;
      background-color: #fbfbfb;
      border: 1px solid #e7e7e9;
      margin-top: 20px;
      text-indent: 15px;
      font-size: 14px;
      color: #333;
    }

    .common_con {
      border: 1px solid #e7e7e9;
      border-top: 0px;
      background-color: #fff;
      padding-bottom: 20px;
      margin-bottom: 20px;
    }

    .opt_btns {
      margin-top: 20px;
    }

    .mp20 {
      margin-top: 20px;
    }

    .pagination {
      margin: 0;
    }

    .article_form {
      margin-top: 20px;
    }

    .form-group {
      margin-bottom: 25px;
    }

    .form-group label {
      font-weight: normal;
      color: #666;
    }

    .icon-icondate {
      line-height: 16px;
    }

    .user_pic {
      width: 100px;
      height: 100px;
      margin-bottom: 10px;
    }

    .article_cover {
      width: 200px;
      height: 200px;
      margin-bottom: 10px;
    }
  </style>
</head>

<body>
  <div class="container-fluid">
    <div class="row spannel_list">
      <div class="col-sm-3 col-xs-6">
        <div class="spannel">
          <em>10015</em>
          <span>篇</span>
          <b>总文章数</b>
        </div>
      </div>
      <div class="col-sm-3 col-xs-6">
        <div class="spannel scolor01">
          <em>123</em>
          <span>篇</span>
          <b>日新增文章数</b>
        </div>
      </div>
      <div class="col-sm-3 col-xs-6">
        <div class="spannel scolor02">
          <em>35</em>
          <span>条</span>
          <b>评论总数</b>
        </div>
      </div>
      <div class="col-sm-3 col-xs-6">
        <div class="spannel scolor03">
          <em>123</em>
          <span>条</span>
          <b>日新增评论数</b>
        </div>
      </div>
    </div>
  </div>

  <div class="container-fluid">
    <div class="row curve-pie">
      <div class="col-lg-8 col-md-8">
        <div class="gragh_pannel" id="curve_show"></div>
      </div>
      <div class="col-lg-4 col-md-4">
        <div class="gragh_pannel" id="pie_show"></div>
      </div>
    </div>
  </div>

  <div class="container-fluid">
    <div class="column_pannel" id="column_show"></div>
  </div>
  <script>
    var oChart = echarts.init(document.getElementById('curve_show'))
    var aList_all = [
      { count: 36, date: '2019-04-13' },
      { count: 52, date: '2019-04-14' },
      { count: 78, date: '2019-04-15' },
      { count: 85, date: '2019-04-16' },
      { count: 65, date: '2019-04-17' },
      { count: 72, date: '2019-04-18' },
      { count: 88, date: '2019-04-19' },
      { count: 64, date: '2019-04-20' },
      { count: 72, date: '2019-04-21' },
      { count: 90, date: '2019-04-22' },
      { count: 96, date: '2019-04-23' },
      { count: 100, date: '2019-04-24' },
      { count: 102, date: '2019-04-25' },
      { count: 110, date: '2019-04-26' },
      { count: 123, date: '2019-04-27' },
      { count: 100, date: '2019-04-28' },
      { count: 132, date: '2019-04-29' },
      { count: 146, date: '2019-04-30' },
      { count: 200, date: '2019-05-01' },
      { count: 180, date: '2019-05-02' },
      { count: 163, date: '2019-05-03' },
      { count: 110, date: '2019-05-04' },
      { count: 80, date: '2019-05-05' },
      { count: 82, date: '2019-05-06' },
      { count: 70, date: '2019-05-07' },
      { count: 65, date: '2019-05-08' },
      { count: 54, date: '2019-05-09' },
      { count: 40, date: '2019-05-10' },
      { count: 45, date: '2019-05-11' },
      { count: 38, date: '2019-05-12' },
    ]

    let aCount = []
    let aDate = []

    for (var i = 0; i < aList_all.length; i++) {
      aCount.push(aList_all[i].count)
      aDate.push(aList_all[i].date)
    }

    var chartopt = {
      title: {
        text: '月新增文章数',
        left: 'center',
        top: '10',
      },
      tooltip: {
        trigger: 'axis',
      },
      legend: {
        data: ['新增文章'],
        top: '40',
      },
      toolbox: {
        show: true,
        feature: {
          mark: { show: true },
          dataView: { show: true, readOnly: false },
          magicType: { show: true, type: ['line', 'bar'] },
          restore: { show: true },
          saveAsImage: { show: true },
        },
      },
      calculable: true,
      xAxis: [
        {
          name: '日',
          type: 'category',
          boundaryGap: false,
          data: aDate,
        },
      ],
      yAxis: [
        {
          name: '月新增文章数',
          type: 'value',
        },
      ],
      series: [
        {
          name: '新增文章',
          type: 'line',
          smooth: true,
          itemStyle: {
            normal: { areaStyle: { type: 'default' }, color: '#f80' },
            lineStyle: { color: '#f80' },
          },
          data: aCount,
        },
      ],
      areaStyle: {
        normal: {
          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
            {
              offset: 0,
              color: 'rgba(255,136,0,0.39)',
            },
            {
              offset: 0.34,
              color: 'rgba(255,180,0,0.25)',
            },
            {
              offset: 1,
              color: 'rgba(255,222,0,0.00)',
            },
          ]),
        },
      },
      grid: {
        show: true,
        x: 50,
        x2: 50,
        y: 80,
        height: 220,
      },
    }

    oChart.setOption(chartopt)

    var oPie = echarts.init(document.getElementById('pie_show'))
    var oPieopt = {
      title: {
        top: 10,
        text: '分类文章数量比',
        x: 'center',
      },
      tooltip: {
        trigger: 'item',
        formatter: '{a} <br/>{b} : {c} ({d}%)',
      },
      color: ['#5885e8', '#13cfd5', '#00ce68', '#ff9565'],
      legend: {
        x: 'center',
        top: 65,
        data: ['奇趣事', '会生活', '爱旅行', '趣美味'],
      },
      toolbox: {
        show: true,
        x: 'center',
        top: 35,
        feature: {
          mark: { show: true },
          dataView: { show: true, readOnly: false },
          magicType: {
            show: true,
            type: ['pie', 'funnel'],
            option: {
              funnel: {
                x: '25%',
                width: '50%',
                funnelAlign: 'left',
                max: 1548,
              },
            },
          },
          restore: { show: true },
          saveAsImage: { show: true },
        },
      },
      calculable: true,
      series: [
        {
          name: '访问来源',
          type: 'pie',
          radius: ['45%', '60%'],
          center: ['50%', '65%'],
          data: [
            { value: 300, name: '奇趣事' },
            { value: 100, name: '会生活' },
            { value: 260, name: '爱旅行' },
            { value: 180, name: '趣美味' },
          ],
        },
      ],
    }
    oPie.setOption(oPieopt)

    var oColumn = this.echarts.init(document.getElementById('column_show'))
    var oColumnopt = {
      title: {
        text: '文章访问量',
        left: 'center',
        top: '10',
      },
      tooltip: {
        trigger: 'axis',
      },
      legend: {
        data: ['奇趣事', '会生活', '爱旅行', '趣美味'],
        top: '40',
      },
      toolbox: {
        show: true,
        feature: {
          mark: { show: true },
          dataView: { show: true, readOnly: false },
          magicType: { show: true, type: ['line', 'bar'] },
          restore: { show: true },
          saveAsImage: { show: true },
        },
      },
      calculable: true,
      xAxis: [
        {
          type: 'category',
          data: ['1月', '2月', '3月', '4月', '5月'],
        },
      ],
      yAxis: [
        {
          name: '访问量',
          type: 'value',
        },
      ],
      series: [
        {
          name: '奇趣事',
          type: 'bar',
          barWidth: 20,
          itemStyle: {
            normal: { areaStyle: { type: 'default' }, color: '#fd956a' },
          },
          data: [800, 708, 920, 1090, 1200],
        },
        {
          name: '会生活',
          type: 'bar',
          barWidth: 20,
          itemStyle: {
            normal: { areaStyle: { type: 'default' }, color: '#2bb6db' },
          },
          data: [400, 468, 520, 690, 800],
        },
        {
          name: '爱旅行',
          type: 'bar',
          barWidth: 20,
          itemStyle: {
            normal: { areaStyle: { type: 'default' }, color: '#13cfd5' },
          },
          data: [500, 668, 520, 790, 900],
        },
        {
          name: '趣美味',
          type: 'bar',
          barWidth: 20,
          itemStyle: {
            normal: { areaStyle: { type: 'default' }, color: '#00ce68' },
          },
          data: [600, 508, 720, 890, 1000],
        },
      ],
      grid: {
        show: true,
        x: 50,
        x2: 30,
        y: 80,
        height: 260,
      },
      dataZoom: [
        //给x轴设置滚动条
        {
          start: 0, //默认为0
          end: 100 - 1000 / 31, //默认为100
          type: 'slider',
          show: true,
          xAxisIndex: [0],
          handleSize: 0, //滑动条的 左右2个滑动条的大小
          height: 8, //组件高度
          left: 45, //左边的距离
          right: 50, //右边的距离
          bottom: 26, //右边的距离
          handleColor: '#ddd', //h滑动图标的颜色
          handleStyle: {
            borderColor: '#cacaca',
            borderWidth: '1',
            shadowBlur: 2,
            background: '#ddd',
            shadowColor: '#ddd',
          },
        },
      ],
    }
    oColumn.setOption(oColumnopt)
  </script>

</body>

</html>